/**
 * (读)获取软连接文件指向的路径
 * @param path string 绝对路径 或 相对工作路径
 * @param opt json|null 选项
 * 		ign: boolean 是否忽略异常  默认false:抛出
 * 			路径不存在或非软连接- > ign?忽略:抛出
 * 		syn: boolean 是否同步操作  默认false:异步
 * @return Promise|string|null  !opt.syn->Promise
 * 		string:原值,  null:不存在或非软连接且ign
 */
$.fsLnr = function(path, opt=null){
	const $FS=require('node:fs'), ERR=(e,o)=>{
		const ign = o.ign && e.code==='EINVAL';
		if(!ign) $.err('$.fsLnr',e); return null;
	};
	$.fsLnr = function(path, opt=null){
		opt=$.mix({},opt);  const asy=!opt.syn;
		if(asy) return $.fsAsync('readlink',path)
			.catch(err=>ERR(err,opt));
		try{ return $FS.readlinkSync(path); }
		catch(err){ return ERR(err,opt); }
	};
	return $.fsLnr(path, opt);
};
